#include <bits/stdc++.h>
using namespace std;

map<string,string> mp ;
pair<string,string> p;

int main(){	
	long long m,n,t;
	string name,str,tele;
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		cin >> name >> tele;
		p.first = name;
		p.second = tele;
		mp.insert(p);
	}
	
	for(int i = 1;i <= m;i++){
		cin >> t >> str;
		if(t==1){
			if(mp.find(str)!=mp.end()){
				cout << mp[str] ;
			}
			else{
				cout<<"NO";
			}
		} 
		if(t==2){
			if(str > (mp.begin()->first)){
				auto it = mp.lower_bound(str);
				--it;
				cout << it->second ;
			}
			else{
				cout<<"NO";
			}
		}
		if(t==3){
			if(str < ((--mp.end())->first)){
				auto it = mp.upper_bound(str);
				cout << it->second;
			}
			else{
				cout<<"NO";
			}
		}
		cout<<endl;  
	}
	
	return 0;
}
